#define _CRT_SECURE_NO_WARNINGS


// 1.
///**
// * Definition for singly-linked list.
// * struct ListNode {
// *     int val;
// *     ListNode *next;
// *     ListNode() : val(0), next(nullptr) {}
// *     ListNode(int x) : val(x), next(nullptr) {}
// *     ListNode(int x, ListNode *next) : val(x), next(next) {}
// * };
// */
//class Solution {
//public:
//    int getDecimalValue(ListNode* head) {
//        ListNode* cur = head;
//        ListNode* prev = NULL;
//        ListNode* next = NULL;
//        while (cur != NULL)
//        {
//            next = cur->next;
//            cur->next = prev;
//            prev = cur;
//            cur = next;
//        }
//        ListNode* reverse_head = prev;
//        // while(reverse_head)
//        // {
//        //     printf("%d",reverse_head->val);
//        //     reverse_head = reverse_head->next;
//        // }
//        int count = 0;
//        int ret = 0;
//        while (reverse_head)
//        {
//            printf("%d,%d\n", reverse_head->val, count);
//            ret += pow(2, count) * reverse_head->val;
//            count++;
//            reverse_head = reverse_head->next;
//        }
//        return ret;
//    }
//};

// 2.
//class Solution {
//public:
//    int getDecimalValue(ListNode* head) {
//        ListNode* cur = head;
//        int val = 0;
//        while (cur)
//        {
//            val = val * 2 + cur->val;
//            cur = cur->next;
//        }
//        return val;
//    }
//};


